প্যাসক্যাল প্রোগ্রামিং ভাষায় ডেটা স্ট্রাকচারগুলি (যেমন Linked Lists, Stacks, এবং Queues) তৈরি এবং পরিচালনা করতে হলে আমাদের মৌলিক ধারণাগুলি বুঝতে হবে। এই স্ট্রাকচারগুলি প্রোগ্রামিংয়ের গুরুত্বপূর্ণ অংশ এবং তা বিভিন্ন অ্যাপ্লিকেশন, যেমন ডেটা ম্যানিপুলেশন এবং অ্যালগরিদমে ব্যবহৃত হয়।
এখানে আমরা Linked List, Stack, এবং Queue তৈরি করার উদাহরণ দেখব।
১. Linked List তৈরি করা
Linked List হলো একটি ডেটা স্ট্রাকচার যা একাধিক ডেটা এলিমেন্ট ধারণ করে, যাদের মধ্যে প্রতিটি এলিমেন্টের একটি পয়েন্টার (link) থাকে পরবর্তী এলিমেন্টের দিকে।
Linked List এর মৌলিক উপাদান:
- Node: প্রতিটি এলিমেন্ট (data) ধারণকারী অংশ।
- Head: লিঙ্কড লিস্টের প্রথম এলিমেন্ট।
Linked List তৈরি করার উদাহরণ:
program LinkedListExample;
type
NodePtr = ^Node;
Node = record
data: Integer;
next: NodePtr;
end;
var
head: NodePtr;
temp: NodePtr;
procedure AddNode(value: Integer);
var
newNode: NodePtr;
begin
new(newNode);
newNode^.data := value;
newNode^.next := nil;
if head = nil then
head := newNode
else
begin
temp := head;
while temp^.next <> nil do
temp := temp^.next;
temp^.next := newNode;
end;
end;
procedure PrintList;
var
temp: NodePtr;
begin
temp := head;
while temp <> nil do
begin
writeln(temp^.data);
temp := temp^.next;
end;
end;
begin
head := nil; { Linked List শুরুতে শূন্য }
AddNode(10);
AddNode(20);
AddNode(30);
writeln('Linked List এর উপাদানসমূহ:');
PrintList;
end.এখানে, আমরা AddNode procedure ব্যবহার করে নতুন নোড যুক্ত করছি এবং PrintList procedure দিয়ে লিস্টের সব এলিমেন্ট প্রিন্ট করছি। এই উদাহরণে, লিঙ্কড লিস্টে তিনটি এলিমেন্ট 10, 20, এবং 30 যোগ করা হয়েছে।
২. Stack তৈরি করা
Stack হলো একটি ডেটা স্ট্রাকচার যেখানে এলিমেন্টগুলি একে অপরের উপর রাখা হয় এবং সর্বশেষ যোগ করা এলিমেন্টটি প্রথমে সরানো হয় (LIFO - Last In, First Out)।
Stack তৈরি করার উদাহরণ:
program StackExample;
type
StackPtr = ^StackNode;
StackNode = record
data: Integer;
next: StackPtr;
end;
var
top: StackPtr;
procedure Push(value: Integer);
var
newNode: StackPtr;
begin
new(newNode);
newNode^.data := value;
newNode^.next := top;
top := newNode;
end;
function Pop: Integer;
var
temp: StackPtr;
begin
if top = nil then
begin
writeln('Stack is empty!');
exit(0);
end;
temp := top;
Pop := temp^.data;
top := top^.next;
dispose(temp);
end;
procedure PrintStack;
begin
while top <> nil do
begin
writeln(Pop);
end;
end;
begin
top := nil; { Stack শুরুতে শূন্য }
Push(10);
Push(20);
Push(30);
writeln('Stack এর উপাদানসমূহ:');
PrintStack;
end.এই উদাহরণে, Push procedure দ্বারা একটি নতুন এলিমেন্ট স্ট্যাকে যোগ করা হচ্ছে এবং Pop function দ্বারা এলিমেন্টটি স্ট্যাক থেকে সরানো হচ্ছে। স্ট্যাকের উপাদানগুলো LIFO পদ্ধতিতে প্রিন্ট করা হয়েছে।
৩. Queue তৈরি করা
Queue হলো একটি ডেটা স্ট্রাকচার যেখানে এলিমেন্টগুলি FIFO (First In, First Out) পদ্ধতিতে প্রবাহিত হয়। প্রথমে যোগ করা এলিমেন্ট প্রথমে বের হয়।
Queue তৈরি করার উদাহরণ:
program QueueExample;
type
QueuePtr = ^QueueNode;
QueueNode = record
data: Integer;
next: QueuePtr;
end;
var
front, rear: QueuePtr;
procedure Enqueue(value: Integer);
var
newNode: QueuePtr;
begin
new(newNode);
newNode^.data := value;
newNode^.next := nil;
if front = nil then
front := newNode
else
rear^.next := newNode;
rear := newNode;
end;
function Dequeue: Integer;
var
temp: QueuePtr;
begin
if front = nil then
begin
writeln('Queue is empty!');
exit(0);
end;
temp := front;
Dequeue := temp^.data;
front := front^.next;
dispose(temp);
end;
procedure PrintQueue;
begin
while front <> nil do
begin
writeln(Dequeue);
end;
end;
begin
front := nil;
rear := nil;
Enqueue(10);
Enqueue(20);
Enqueue(30);
writeln('Queue এর উপাদানসমূহ:');
PrintQueue;
end.এখানে, Enqueue procedure দ্বারা একটি নতুন এলিমেন্ট কিউতে যোগ করা হচ্ছে এবং Dequeue function দ্বারা প্রথম এলিমেন্টটি কিউ থেকে সরানো হচ্ছে। এই উদাহরণে, কিউে 10, 20, এবং 30 যোগ করা হয়েছে এবং FIFO পদ্ধতিতে আউটপুট দেখানো হচ্ছে।
সারাংশ
- Linked List: একটি ডায়নামিক ডেটা স্ট্রাকচার যেখানে প্রতিটি নোড পরবর্তী নোডের পয়েন্টার ধারণ করে।
- Stack: LIFO (Last In, First Out) পদ্ধতিতে কাজ করে, যেখানে সর্বশেষ যোগ করা এলিমেন্ট প্রথমে বের হয়।
- Queue: FIFO (First In, First Out) পদ্ধতিতে কাজ করে, যেখানে প্রথমে যোগ করা এলিমেন্ট প্রথমে বের হয়।
এই ডেটা স্ট্রাকচারগুলি প্যাসক্যাল প্রোগ্রামে কোডের মাধ্যমে তৈরি ও পরিচালনা করা যায়, যা বিভিন্ন ধরনের অ্যাপ্লিকেশন এবং অ্যালগরিদমে ব্যবহৃত হয়।
Read more